/*
 * @author java_deng
 * @date 2025/2/5 13:31
 * @description
 */
package org.hbwl.service;

import org.hbwl.configuration.Common;
import org.hbwl.dto.Region;
import org.hbwl.mapper.RegionMapper;
import org.hbwl.po.RegionPo;
import org.hbwl.vo.RegionVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class RegionService {
    @Autowired
    private RegionMapper regionMapper;

    public RegionVo list(RegionPo regionPo) {

        RegionVo regionVo=new RegionVo();
        List<List<Region>> lists=new ArrayList<>();

        regionPo.setRegionLevel(1);
        List<Region> list1 = regionMapper.list(regionPo);
        lists.add(list1);

        regionPo.setRegionLevel(2);
        if(regionPo.getRegionParentIdLevel1()==null){
            regionPo.setRegionParentIdLevel1(Common.defaultRegionParentIdLevel1);
        }
        regionPo.setRegionParentId(regionPo.getRegionParentIdLevel1());
        List<Region> list2 = regionMapper.list(regionPo);
        lists.add(list2);

        regionPo.setRegionLevel(3);
        if(regionPo.getRegionParentIdLevel2()==null){
            regionPo.setRegionParentIdLevel2(Common.defaultRegionParentIdLevel2);
        }
        regionPo.setRegionParentId(regionPo.getRegionParentIdLevel2());
        List<Region> list3 = regionMapper.list(regionPo);
        lists.add(list3);

        regionVo.setLists(lists);
        return regionVo;
    }

    public List<Region> column(Long regionId) {
        RegionPo regionPo = new RegionPo();
        regionPo.setRegionParentId(regionId);
        return regionMapper.list(regionPo);
    }

    public String getFullAddress(Region region){
        StringBuilder regionName = new StringBuilder(region.getRegionName());
        while(region.getRegionLevel()!=1){
            region= regionMapper.selectById(region.getRegionParentId());
            regionName.insert(0, region.getRegionName() + " ");
        }
        return regionName.toString();
    }
}
